iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
佛心分享-SideProject30

網頁遊戲_名字對決系列 第 13

Day13 - 整理程式碼、實驗prompt

  • 分享至 

  • xImage
  •  

今天和第十天一樣,什麼修改都沒做,上來就測試便成功輸出了,看來是要整個伺服器重啟才能正常輸出?

可以看到,目前效果有點笨,說明規則的部分過多,甚至最後還沒講完就被掐斷了,這些都需要修改prompt來讓效果更好,也許以後專門訓練一個用來跑這個遊戲的模型會比較好?但目前就先用gpt過渡吧,先繼續推進專案來練習程式,等完成後再回來微調。
https://ithelp.ithome.com.tw/upload/images/20240926/20138459YMurL4Q5wW.png

寫一些Rust的筆記,這是對戰的角色資料,Rust是靜態語言,需要先宣告才能使用:

#[derive(Serialize, Deserialize, sqlx::FromRow)]
struct Character {
    id: i32,
    name: String,
    description: String,
    avatar_char: String,
    color: String,
    wins: i32,
    losses: i32,
}
#[derive(...)] 這一行是在告訴 Rust 自動為這個結構生成一些額外的功能:
Serialize: 允許將這個結構轉換成如 JSON 這樣的格式(用於保存或傳輸數據)。
Deserialize: 允許從 JSON 等格式轉換回這個結構。
sqlx::FromRow: 允許直接從數據庫查詢結果創建這個結構的實例。

這一段是從資料庫取角色資料的程式碼:

async fn get_character(pool: &PgPool, id: i32) -> sqlx::Result<Character> {
    sqlx::query_as::<_, Character>("SELECT * FROM characters WHERE id = $1")
        .bind(id)
        .fetch_one(pool)
        .await
}
這個函數 get_character 用於從數據庫中獲取一個角色的信息:

async fn: 表示這是一個異步函數,可以在等待數據庫回應時不阻塞程序的其他部分。
它接受兩個參數:一個數據庫連接池(pool)和一個角色 ID。
函數內部:

執行一個 SQL 查詢:SELECT * FROM characters WHERE id = $1
$1 是一個佔位符,後面的 .bind(id) 將實際的 ID 值填入這個位置。
query_as::<_, Character> 告訴 Rust 將查詢結果直接轉換為 Character 結構。
fetch_one 表示我們期望只獲取一個結果。
.await 表示等待這個異步操作完成。

上一篇
Day12 - 功能製作3_改用資料庫讀取資料&測試新的勝利方式
下一篇
Day14 - 上傳github、移除github歷史紀錄
系列文
網頁遊戲_名字對決30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言